// 导入生成Token的包
const jwt = require("jsonwebtoken");
exports.getUsersByRedis = async (req, res) => {
  // const users = await redis.lrange("my-users", 0, -1);
  // console.log(redis);
  try {
    const keys = await redis.keys("*");
    console.log(keys);
    let users = {};
    const promises = keys.map((key) => redis.get(key));
    const values = await Promise.all(promises);
    for (let i = 0; i < keys.length; i++) {
      const ttl = await redis.ttl(keys[i]);
      users[keys[i]] = values[i] + "-----剩余有效期" + ttl + "秒";
    }
    res.render("users", { users });
  } catch (error) {
    res.render("users", {});
  }
};
// 登录处理函数
exports.login = async (req, res) => {
  // 接受表单的数据
  const userinfo = req.body;
  if (!userinfo.email) {
    return res.cc("请输入邮箱！");
  }
  // 定义SQL语句
  const sql = `select * from fa_users where email=?`;
  //  执行SQL语句，根据email查询用户的信息
  global.query(sql, userinfo.email).then((results) => {
    //  执行SQL语句成功，但是获取到的数据条数不等于1
    if (results.length !== 1) return res.cc("登录失败");
    //  在服务器端生成token的字符串
    // 剔除敏感信息（用户头像）
    const user = {
      id: results[0].id,
      team_id: results[0].team_id,
    };
    // 对用户信息进行加密，生成token字符串
    const tokenStr = jwt.sign(user, process.env.SECRET_KEY, {
      expiresIn: process.env.EXPIRESIN,
    });
    global.connectRedis.set(results[0].id, tokenStr, "EX", 24 * 60 * 60);
    // 调用res.send()将token响应给客户端
    res.send({
      code: 200,
      msg: "登录成功",
      token: "Bearer " + tokenStr,
    });
  });
};
